package com.xyht.sca_s.student_manage_system.modules.visitor.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xyht.sca_s.student_manage_system.common.commonReturn.CommonCodeEnum;
import com.xyht.sca_s.student_manage_system.common.commonReturn.CommonResult;
import com.xyht.sca_s.student_manage_system.common.commonReturn.ResponseResult;
import com.xyht.sca_s.student_manage_system.modules.visitor.entity.SmsVisitorOperatingManual;
import com.xyht.sca_s.student_manage_system.modules.visitor.entity.dto.SmsVisitorOperatingManualDTO;
import com.xyht.sca_s.student_manage_system.modules.visitor.entity.vo.SmsVisitorOperatingManualVO;
import com.xyht.sca_s.student_manage_system.modules.visitor.mapper.SmsVisitorOperatingManualMapper;
import com.xyht.sca_s.student_manage_system.modules.visitor.service.SmsVisitorOperatingManualService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import static com.xyht.sca_s.student_manage_system.common.util.ParamCheckUtil.isNullOrEmpty;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author XYHT
 * @since 2023-04-16
 */
@Service
public class SmsVisitorOperatingManualServiceImpl extends ServiceImpl<SmsVisitorOperatingManualMapper, SmsVisitorOperatingManual> implements SmsVisitorOperatingManualService {
    @Autowired
    SmsVisitorOperatingManualMapper smsVisitorOperatingManualMapper;
    @Override
    public ResponseResult smsVisitorOperatingManualAdd(SmsVisitorOperatingManualVO smsVisitorOperatingManualVO) {
        if(isNullOrEmpty(smsVisitorOperatingManualVO.getVisitorContent())){
            return CommonResult.failed(CommonCodeEnum.INVALID_PARAM);
        }
        SmsVisitorOperatingManual smsVisitorOperatingManual = new SmsVisitorOperatingManual();
        smsVisitorOperatingManual.setVisitorContent(smsVisitorOperatingManualVO.getVisitorContent());
        smsVisitorOperatingManualMapper.insert(smsVisitorOperatingManual);
        return CommonResult.success();
    }

    @Override
    public ResponseResult updateSmsVisitorOperatingManual(SmsVisitorOperatingManualVO smsVisitorOperatingManualVO) {
        if(isNullOrEmpty(smsVisitorOperatingManualVO)){
            return CommonResult.failed(CommonCodeEnum.INVALID_PARAM);
        }
        SmsVisitorOperatingManual smsVisitorOperatingManual = smsVisitorOperatingManualMapper.selectById(smsVisitorOperatingManualVO);
        if(isNullOrEmpty(smsVisitorOperatingManual)){
            return CommonResult.failed(CommonCodeEnum.DATA_NOT_FOUND);
        }
        SmsVisitorOperatingManual smsVisitorOperatingManual1 = new SmsVisitorOperatingManual();
        BeanUtils.copyProperties(smsVisitorOperatingManualVO,smsVisitorOperatingManual1);
        smsVisitorOperatingManualMapper.updateById(smsVisitorOperatingManual1);
        return CommonResult.success();
    }

    @Override
    public ResponseResult selectSmsVisitorOperatingManual() {
        SmsVisitorOperatingManual one = this.getOne(new LambdaQueryWrapper<SmsVisitorOperatingManual>()
                .orderByDesc(SmsVisitorOperatingManual::getUpdateTime)
                .last("limit 1")
        );
        SmsVisitorOperatingManualVO smsVisitorOperatingManualVO = BeanUtil.copyProperties(one, SmsVisitorOperatingManualVO.class);
        return CommonResult.success(smsVisitorOperatingManualVO);

    }

    @Override
    public ResponseResult selectSmsVisitorOperatingManualById(String id) {
        if(isNullOrEmpty(id)){
            return CommonResult.failed(CommonCodeEnum.INVALID_PARAM);
        }
        SmsVisitorOperatingManual query = smsVisitorOperatingManualMapper.selectById(id);
        if(isNullOrEmpty(query)){
            return CommonResult.failed(CommonCodeEnum.DATA_NOT_FOUND);
        }
        SmsVisitorOperatingManual smsVisitorOperatingManual = new SmsVisitorOperatingManual();
        smsVisitorOperatingManual.setId(id);
        SmsVisitorOperatingManualDTO smsVisitorOperatingManualDTO = new SmsVisitorOperatingManualDTO();
        BeanUtils.copyProperties(query,smsVisitorOperatingManualDTO);
        return CommonResult.success(smsVisitorOperatingManualDTO);
    }
}
